# Kapitel 2: 
# Longitudinalschwingungen von Stben, 
# homogene Randbedingungen
#  2017  Friedrich U. Mathiak, 
# mathiak@mechanik-info.de
# 
> restart: with(plots):
> 
;
> Proc_Calc_03:=proc(Daten::list)
> #-------------------------------------------------------------------
> #Eingabe:
> #   Daten[1]:  rho: Dichte in [kg/m^3]
> #   Daten[2]:    E: Elastizittsmodul in [N/m^2]
> #   Daten[3]:    A: Elastizittsmodul in [N/m^2]
> #   Daten[4]     l: Lnge der Saite in [m]
> #   Daten[5]: Flag: Lagerungsfall 
> #                   Flag = 1: Stab beidseitig eingespannt
> #                   Flag = 2: Stab links eingespannt, rechts frei
> #                   Flag = 3: Stab links frei, rechts eingespannt
> #                   Flag = 4: Stab beidseitig frei
> #  Daten[6]:    NE: Anzahl der zu berechnenden Eigenfunktionen (NE >=3)
> #Ausgabe:
> #         cL: Fortpflanzungsgeschwindigkeit
> #         L: Longitudinalwellenzahl
> #          : Eigenfrequenz
> #          : Wellenlnge
> #          T: Schwingungsdauer
> #--------------------------------------------------------------------
> local NE,EA,XS,p1,Flag;
> global cL,kappan,kappa,omega,lambda,TN,X;
> description "Longitudinalschwingungen von Stben mit homogenen Randbedingungen";
> Flag:= Daten[5];
> if Flag > 4 or Flag < 1 then print(`!!!1 d Flag d 4 whlen!!!`); return; end if;
> NE:=Daten[6]:
> if NE <3 then 
> print(`Anzahl der zu berechnenden Eigenfunktion N >= 3 whlen`);
> return;
> end if; 
> EA:=Daten[2]*Daten[3];
> cL:=sqrt(Daten[2]/Daten[1]);               #Fortpflanzungsgeschwindigkeiten
> kappan:=[n*Pi/l,(2*n-1)/2*Pi/l,(2*n-1)/2*Pi/l,n*Pi/l];
> kappa :=seq(kappan[Flag],n=1..NE);         #Longitudinalwellenzahlen
> omega :=kappa*cL;                          #Eigenfrequenzen
> lambda:=seq(2*Pi/kappa[n],n=1..NE);        #Wellenlnge
> TN    :=seq(2*Pi/omega[n],n=1..NE);        #Schwingungsdauer
> if   Flag = 1 or Flag = 2 then
>   X:=seq(sin(kappa[n]*l*xi),n=1..NE):      #Eigenfunktionen
> elif Flag = 3 or Flag = 4 then
>   X:=seq(cos(kappa[n]*l*xi),n=1..NE):      #Eigenfunktionen
> end if:
> XS:=[seq(X[i],i=1..3)];
> p1:=plot(XS,xi=0..1,title = "\nDie ersten drei Eigenfunktionen\n",titlefont = ["ARIAL", 15],labels = [" = x/", "X()"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10],legend = ["Grundschwingung", "1. Oberschwingung", "2. Oberschwingung"],legendstyle = [font = ["HELVETICA", 9], location = bottom],gridlines=true,axes=boxed,linestyle = [solid, dot,longdash],color=[black,black,black]):
> # Ausgabe der Ergebnisse
> print(`Fortpflanzungsgeschwindigkeit c = `,cL);
> print(`Longitudinalwellenzahlen  = `,kappa);
> print(`Eigenfrequenzen  = `,omega);
> print(`Wellenlngen  = `,lambda);
> print(`Schwingungsdauern T =`,TN);
> print(`Eigenfunktionen X(x) = `,X);
> plots[display](p1);
> end proc:
# Beispiel 2-1: 
# Zur Konkretisierung des Eigenwertproblems werden folgende Daten verwendet:
> rho:=7850.; E:=2.1*10^11; A:=0.0001; l:=1.0; Flag:=4; N:=5;
> daten:=[rho,E,A,l,Flag,N];
> Proc_Calc_03(daten);
> 
;
